<?php
#WYJATKI 2  bardziej zawansowane 
#tworzenie wlasnej klasy wyjatkow

 #klsa zawierajaca ryzykowna metode np. pobieranie z bazy zglaszajace wyjatek
class Generic
  {
      #Ryzykowna metoda zglaszajaca wyjatek
      public function testValue($someOtherVar)
      {
          if($someOtherVar > 30) {
      #Zgłaszanie wyjatku Moja klasa wyjatkow   parametry: komunikat, rodzak bledu(coc mam z nim zrobic)
              throw new CustomException('podana wartosc nie moze byc wieksza od 3!',2);
          } 
          if($someOtherVar > 3) {
              //wykonanie innej operacji jezeli wystapi blad mniejszej rangi
              throw new CustomException('podana wartosc nie moze byc wieksza od 3!',1);
          }
          else {
              $this->result = 5 + $someOtherVar;
              echo $this->result . '<br />';
          }
      }
  }

  #moja klasa wyjatkow rozszeza Exeption
  class CustomException extends Exception
  {
      public function logError()
      {
            // Send notification through the server log
            if($this->getCode() == 1){
                echo $this->getMessage();
                echo '<br>Bład klasy 1 tylko wypisanie jego.<br>';
                #Moja wykonanie bledu takie jakie bende chcial np zapis do bazy wyslanie majla ect
            }
            // Notify administrator by email
            else if($this->getCode() == 2){
                echo($this->getMessage());
            echo('<br>blad klssy 2 zapis do bazy + wyslanie majla');
            }
      }
}

//Wywolanie ryzykownej metody
  try
  {
        $gen = new Generic();
        $gen->testValue(2);    //jezeli poda arg <3 spoko
  } catch (CustomException $e) {
        $e->logError();
  }


?>